package cn.exrick.xboot.base.service

import cn.exrick.xboot.base.dto.SecurityAdvisorDto
import cn.exrick.xboot.base.entity.SecurityAdvisor
import cn.exrick.xboot.base.vo.*
import cn.exrick.xboot.core.common.vo.PageVo
import cn.exrick.xboot.core.common.vo.Result
import com.baomidou.mybatisplus.extension.service.IService

/**
 * 安全顾问接口
 * @author Fei
 */
interface ISecurityAdvisorService : IService<SecurityAdvisor?> {

    /**
     * 监管部门添加安全顾问(管理系统)
     */
    fun createSecurityAdvisor(securityAdvisorDto: SecurityAdvisorDto?): Result<Any?>?

    /**
     * 监管部门修改安全顾问(管理系统) && 安全手机端修改个人信息(app)
     */
    fun updateSecurityAdvisor(securityAdvisorDto: SecurityAdvisorDto): Result<Any?>?

    /**
     * 监管部门移除安全顾问(管理系统)
     */
    fun removeSecurityAdvisor(ids: Array<out String>?): Result<Any?>?

    /**
     * 监管部门禁用安全顾问(管理系统)
     */
    fun forbiddenSecurityAdvisor(ids: Array<out String>?): Result<Any?>?

    /**
     * 监管部门(企业部门)获取安全顾问列表(管理系统)
     */
    fun securityAdvisorList(pageVo: PageVo): Result<MutableMap<String, Any?>?>?


    /**
     * 获取同级的监管部门信息接收员
     */
    fun getSupervisionListByAreaId(): Result<List<UserCommonVo>>


    /**
     * 获取同区域的安全顾问列表
     */
    fun getSecurityAdvisorListByAreaId(pageVo: PageVo): Result<MutableMap<String, Any?>?>?

    /**
     * 获取统计企业列表
     */
    fun getEnterpriseListByAreaId(pageVo: PageVo, areaId: String?): Result<MutableMap<String, Any?>?>?


    /**
     * 获取安全顾问个人信息
     */
    fun getSecurityAdvisorInfo(): Result<SecurityAdvisorInfoVo?>?


    /**
     * 获取安全顾问封装类
     */
    fun getSecurityAdvisorVo(id: String?): SecurityAdvisorVo?

    /**
     * 安全顾问列表信息
     */
    fun getSecurityAdvisorListVo(id: String): SecurityAdvisorListVo?

    /**
     * 获取安全顾问详情信息
     */
    fun getSecurityAdvisorDetailVo(id: String): SecurityAdvisorDetailVo?

    /**
     * 获取企业安全顾问列表
     */
    fun getSecurityEnterpriseAdvisorListVO(securityUserId: String) : EnterpriseSecurityAdvisorListVo?


    /**
     * 通过安全顾问id获取userId
     */
    fun getUserIdBySecurityId(securityId: String): String?

}